package socket;

import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.Socket;

/*
 * 逻辑线程处理
 * @auth  王欢
 * @date  20140724  
 */
public class LogicThread extends Thread{
		Socket socket;
		InputStream is;
		OutputStream os;
		
		public LogicThread(Socket socket){
			this.socket = socket;
			start();  //启动线程
		}
		
		public void run(){
			byte[] b = new byte[1024];
			
			try {
				//初始化I/O 流
				os = socket.getOutputStream();
				is = socket.getInputStream();

			
				//读取数据
				int n = is.read(b);
				//逻辑处理
				byte[] response = logic( b, 0, n);
				//反馈数据
				os.write(response);
				
			} catch (IOException e) {
				// TODO 自动生成的 catch 块
				e.printStackTrace();
			}finally{
				close();
			}
		}
		
		 /**
	     * 逻辑处理方法,实现echo逻辑
	     * @param b 客户端发送数据缓冲区
	     * @param off 起始下标
	     * @param len 有效数据长度
	     * @return
	     */
		private byte[] logic(byte[] b, int off, int len) {
			byte[] respose = new byte[len];
			//将有效的数据拷贝到数组respose 中
			System.arraycopy(b, 0, respose, 0, len);
			
			return respose;
		}

		
		/**
		 * 关闭I/O 流
		 */
		public void close(){
			
			try {
				os.close();
				is.close();
			} catch (IOException e) {}
		}
}
